package com.satoken.controller;

import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/user")
public class UserController extends SaResult {

    // 测试登录，浏览器访问： http://localhost:8081/user/doLogin?username=admin&password=123456&id=10001
    @GetMapping("/doLogin")
    public SaResult doLogin(String username, String password, Integer id) {
        // 判断账号是否封禁
        if (StpUtil.isDisable(id)) {
            return error("抱歉，账号已经封禁");
        }
        // 此处仅作模拟示例，真实项目需要从数据库中查询数据进行比对
        if("admin".equals(username) && "123456".equals(password)) {
            StpUtil.login(id);
            return ok("登录成功");
        }
        return error("登录失败");
    }

    // 查询登录状态，浏览器访问： http://localhost:8081/user/isLogin
    @GetMapping("/isLogin")
    public SaResult isLogin() {
        return data(StpUtil.isLogin());
    }

    // 注销登录，浏览器访问： http://localhost:8081/user/logout
    @GetMapping("/logout")
    public SaResult logout() {
        StpUtil.logout();
        return ok("退出成功");
    }

    // 查询 Token 信息：http://localhost:8081/user/tokenInfo
    @GetMapping("/tokenInfo")
    public SaResult tokenInfo() {
        return data(StpUtil.getTokenInfo());
    }

    // 封禁账号：http://localhost:8081/user/disable
    @GetMapping("/disable")
    public SaResult disable() {
        StpUtil.kickout(10002);
        StpUtil.disable(10002, 86400);
        return ok("封禁成功");
    }

    // 查询账号是否被封禁：http://localhost:8081/user/isDisable
    @GetMapping("/isDisable")
    public SaResult isDisable() {
        return data(StpUtil.isDisable(10002));
    }
}